/* -*-jde-*- */
package app.usuario;

import app.usuario.beans.Direccion;
import app.conexion.Conexion;
import app.conexion.ConexionException;
import app.util.appException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 * Bean Correos Cada uno de las direcciones asignadas a un usuario
 *
 * @author Victor Miguel Peralta Santa Anna
 * @since Diciembre 2011
 * @version 0.1
 */
public class Direcciones {

    /**
     * El correo asignado al usuario
     */
    private LinkedList<Direccion> direcciones = new LinkedList<Direccion>();

    /**
     * Se obliga el uso a métodos estáticos.
     */
    public Direcciones(int nIdUsuario) throws appException {
        getDireccionesBase(nIdUsuario);
    }

    /**
     * Método que inicializa la lista con los correos existentes en la base de
     * datos para un usuario
     *
     * @throws appException
     */
    private void getDireccionesBase(int nIdUsuario) throws appException {
        try {

            Conexion con = new Conexion();
            direcciones.clear();
            String query = "select * from direccion where nIdUsuario = " + nIdUsuario + ";";

            ResultSet r = con.exec(query);


            while (r.next()) {
                int idi = r.getInt("niddireccion");
                int idc = r.getInt("nidusuario");
                String s1 = r.getString("sestado");
                String s2 = r.getString("sciudad");
                String s3 = r.getString("scalle");
                String s4 = r.getString("snumeroExterior");
                String s5 = r.getString("snumeroInterior");
                String s6 = r.getString("scolonia");
                String s7 = r.getString("sdelegacion");
                String s8 = r.getString("scodigopostal");


                direcciones.add(new Direccion(idi, idc, s1, s2, s3, s4, s5, s6, s7, s8));
            }

            con.close();

        } catch (SQLException ex) {
            System.err.println(ex);
            Logger.getLogger(Correos.class.getName()).log(Level.SEVERE, null, ex);
            throw new appException("No se pueden recuperar las direcciones de la base de datos");
        } catch (ConexionException ex) {
            System.err.println(ex);
            Logger.getLogger(Correos.class.getName()).log(Level.SEVERE, null, ex);
            throw new appException("No se pueden recuperar las direcciones de la base de datos");
        }

    }

    /**
     * Toma las direcciones asignadas a un usuario
     *
     * @return
     */
    public LinkedList<Direccion> getDirecciones() {
        return direcciones;
    }

    /**
     * Conexiones de prueba a la base de datos
     *
     * @param args
     * @throws ConexionException
     * @throws SQLException
     * @throws appException
     */
    public static void main(String args[]) throws ConexionException, SQLException, appException {

        Direcciones direc = new Direcciones(1);

        LinkedList<Direccion> direcciones = direc.getDirecciones();

        System.out.println(direcciones);


    }
}
